using System;

namespace libcharakter
{
	namespace Talente
	{
		namespace Koeperlich
		{
			[Serializable]
			public class KoeperlicheTalent : abTalent
			{
				public KoeperlicheTalent (string name, int value, Charakter charakter)
					: base(name, value, TalentType.Koeperlich, TableColum.D, charakter)
				{
				}
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest) { return false; }
			}
			[Serializable]
			public class Akrobatik : KoeperlicheTalent 
			{
				public Akrobatik (int value, Charakter charakter) : base("Akrobatik", value, charakter) {  }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Gewandheit"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Athletik : KoeperlicheTalent 
			{
				public Athletik (int value, Charakter charakter) : base("Athletik", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Gewandheit"], eg["Konstitution"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Gaukelein : KoeperlicheTalent 
			{
				public Gaukelein (int value, Charakter charakter) : base("Gaukelein", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Charisma"], eg["Fingerfertigkeit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Klettern : KoeperlicheTalent 
			{
				public Klettern (int value, Charakter charakter) : base("Klettern", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Gewandheit"], eg["Fingerfertigkeit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Koeperbeherrschung : KoeperlicheTalent 
			{
				public Koeperbeherrschung (int value, Charakter charakter) : base("Koeperbeherrschung", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Gewandheit"], eg["Konstitution"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Reiten : KoeperlicheTalent 
			{
				public Reiten (int value, Charakter charakter) : base("Reiten", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Charisma"], eg["Gewandheit"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Schleichen : KoeperlicheTalent 
			{
				public Schleichen (int value, Charakter charakter) : base("Schleichen", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Intuition"], eg["Gewandheit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Schwimmen : KoeperlicheTalent 
			{
				public Schwimmen (int value, Charakter charakter) : base("Schwimmen", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Gewandheit"], eg["Konstitution"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Selbstbeherrschung : KoeperlicheTalent 
			{
				public Selbstbeherrschung (int value, Charakter charakter) : base("Selbstbeherrschung", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Konstitution"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class SichVerstecken : KoeperlicheTalent 
			{
				public SichVerstecken (int value, Charakter charakter) : base("Sich Verstecken", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Intuition"], eg["Gewandheit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Singen : KoeperlicheTalent 
			{
				public Singen (int value, Charakter charakter) : base("Singen", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Intuition"], eg["Charisma"], eg["Konstitution"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Sinnenschärfe : KoeperlicheTalent 
			{
				public Sinnenschärfe (int value, Charakter charakter) : base("Sinnenschärfe", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					if(Probe (eg["Klugheit"], eg["Intuition"], eg["Intuition"], wert1, wert2, wert3, erschwert, ref rest) == false)
						return Probe(eg["Klugheit"], eg["Intuition"], eg["Fingerfertigkeit"], wert1, wert2, wert3, erschwert, ref rest);
					else
						return true;
				}
			}
			[Serializable]
			public class StimmenImitieren : KoeperlicheTalent 
			{
				public StimmenImitieren (int value, Charakter charakter) : base("Stimmen Imitieren", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Klugheit"], eg["Intuition"], eg["Charisma"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Tanzen : KoeperlicheTalent 
			{
				public Tanzen (int value, Charakter charakter) : base("Tanzen", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Charisma"], eg["Gewandheit"], eg["Gewandheit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Taschendiebstahl : KoeperlicheTalent 
			{
				public Taschendiebstahl (int value, Charakter charakter) : base("Taschendiebstahl", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Mut"], eg["Intuition"], eg["Fingerfertigkeit"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class Zechen : KoeperlicheTalent 
			{
				public Zechen (int value, Charakter charakter) : base("Zechen", value, charakter) { }
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Intuition"], eg["Konstitution"], eg["Körperkraft"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
		}
	}
}

